home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 3: Developer Tools / Linux Cubed Series 3 - Developer Tools.iso / utils / console / svgatext.3 / svgatext / SVGATextMode-1.3 / chipset.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-03-31  |  10.2 KB  |  435 lines

  1. /*  SVGATextMode -- An SVGA textmode manipulation/enhancement tool
  2.  *
  3.  *  Copyright (C) 1995,1996  Koen Gadeyne
  4.  *
  5.  *  This program is free software; you can redistribute it and/or modify
  6.  *  it under the terms of the GNU General Public License as published by
  7.  *  the Free Software Foundation; either version 2 of the License, or
  8.  *  (at your option) any later version.
  9.  *
  10.  *  This program is distributed in the hope that it will be useful,
  11.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13.  *  GNU General Public License for more details.
  14.  *
  15.  *  You should have received a copy of the GNU General Public License
  16.  *  along with this program; if not, write to the Free Software
  17.  *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  18.  */
  19.  
  20.  
  21. /***
  22.  *** chipset parameters for SVGATextMode
  23.  ***
  24.  ***/
  25.  
  26. #ifndef _CHIPSET_H
  27. #define _CHIPSET_H
  28.  
  29. #include "cfg_structs.h"
  30.  
  31. extern int STM_Options;
  32. #define OFLG_SET(opt)  (STM_Options |= (opt))
  33. #define OFLG_CLR(opt)  (STM_Options &= ~(opt))
  34. #define OFLG_ISSET(opt)  ( (STM_Options & (opt)) != 0 )
  35.  
  36. typedef const struct {
  37.   const int name;
  38.   const int clkchip_mask;
  39.   const int optmask;
  40.   const int maxclock;  /* in khz */
  41. } t_chipset_data;
  42.  
  43. typedef const struct {
  44.   const char *name_str;
  45.   const int name;
  46. } t_str_token;
  47.  
  48. typedef const struct {
  49.   const int name;
  50.   const int minclock;
  51.   const int maxclock;
  52. } t_clockchip_data;
  53.  
  54. /*
  55.  * Supported Chipsets
  56.  */
  57.  
  58. #define CS_NONE       -1
  59.  
  60. #define CS_VGA        0
  61. #define CS_S3         1
  62. #define CS_CIRRUS     2
  63. #define CS_ET4000     3
  64. #define CS_TVGA8900   4
  65. #define CS_TVGA9000   5
  66. #define CS_PVGA1      6
  67. #define CS_WDC90C0X   7
  68. #define CS_WDC90C1X   8
  69. #define CS_WDC90C2X   9
  70. #define CS_WDC90C3X   10
  71. #define CS_ATI        11
  72. #define CS_ATIMACH32  12
  73. #define CS_VIDEO7     13
  74. #define CS_ALI        14
  75. #define CS_AL2101     15
  76. #define CS_OTI67      16
  77. #define CS_OTI77      17
  78. #define CS_OTI87      18
  79. #define CS_SIS        19
  80. #define CS_REALTEK    20
  81. #define CS_ARK        21
  82. #define CS_NCR22E     22
  83. #define CS_NCR32      23
  84. #define CS_GVGA       24
  85. #define CS_MX         25
  86. #define CS_ET3000     26
  87.  
  88.  
  89. #define CLKCHIP_NONE        -1
  90.  
  91. #define CLKCHIP_ICD2061A     0
  92. #define CLKCHIP_ICS9161A     1
  93. #define CLKCHIP_DCS2834      2
  94. #define CLKCHIP_SC11412      3
  95. #define CLKCHIP_S3GENDAC     4
  96. #define CLKCHIP_S3_SDAC      5
  97. #define CLKCHIP_TI3025       6
  98. #define CLKCHIP_ICS2595      7
  99. #define CLKCHIP_ICS5300      8
  100. #define CLKCHIP_ICS5342      9
  101. #define CLKCHIP_CH8391       10
  102. #define CLKCHIP_S3TRIO       11
  103. #define CLKCHIP_CIRRUS       12
  104. #define CLKCHIP_ICS5341      13
  105. #define CLKCHIP_STG1703      14
  106. #define CLKCHIP_TI3026       15
  107. #define CLKCHIP_IBMRGB5XX    16
  108.  
  109.  
  110. #define OPT_HIBIT_LOW      1<<0
  111. #define OPT_HIBIT_HIGH     1<<1
  112. #define OPT_ET4000_ALTCLK  1<<2
  113. #define OPT_SWAP_HIBIT     1<<3
  114. #define OPT_LEGEND         1<<4
  115. #define OPT_FAST_DRAM      1<<5
  116. #define OPT_MED_DRAM       1<<6
  117. #define OPT_SLOW_DRAM      1<<7
  118. #define OPT_XFAST_DRAM     1<<8
  119. #define OPT_LOADFONT       1<<9
  120. #define OPT_CLOCKDIV2      1<<10
  121. #define OPT_SPEA_MERCURY   1<<11
  122. #define OPT_SYNC           1<<12
  123. #define OPT_S3_HS_TEXT     1<<13
  124. #define OPT_CLKCHIP_X      1<<14
  125. #define OPT_SOG            1<<15
  126. #define OPT_16COLOR        1<<16
  127.  
  128. #define ENDREC -1 
  129.  
  130.  
  131. #  ifndef CHIPSETREC
  132. extern t_str_token ChipsetRec[];
  133. extern t_chipset_data ChipsetData[];
  134. extern t_str_token ClockchipRec[];
  135. extern t_str_token OptionRec[];
  136. extern t_clockchip_data ClockchipData[];
  137.  
  138. #  else
  139.  
  140. #define COMMON_OPTS         OPT_SYNC | OPT_LOADFONT | OPT_16COLOR
  141. #define DRAM_SPEED_OPTS     OPT_FAST_DRAM | OPT_MED_DRAM | OPT_SLOW_DRAM | OPT_XFAST_DRAM
  142.  
  143.  
  144. /* the CS_XXX values will be used later to do direct indexing in this array
  145.  * So we MUST make sure that consistency is maintained when adding chipsets
  146.  * or changing stuff in the array.
  147.  */
  148.  
  149.  
  150. t_str_token ChipsetRec[] = {
  151.   { "VGA",       CS_VGA       },
  152.   { "S3",        CS_S3        },
  153.   { "CLGD542x",  CS_CIRRUS    },
  154.   { "ET4000",    CS_ET4000    },
  155.   { "TVGA8900",  CS_TVGA8900  },
  156.   { "TVGA9000",  CS_TVGA9000  },
  157.   { "PVGA1",     CS_PVGA1     },
  158.   { "WDC90C0X",  CS_WDC90C0X  },
  159.   { "WDC90C1X",  CS_WDC90C1X  },
  160.   { "WDC90C2X",  CS_WDC90C2X  },
  161.   { "WDC90C3X",  CS_WDC90C3X  },
  162.   { "ATI",       CS_ATI       },
  163.   { "ATIMACH32", CS_ATIMACH32 },
  164.   { "VIDEO7",    CS_VIDEO7    },
  165.   { "ALI",       CS_ALI       },
  166.   { "AL2101",    CS_AL2101    },
  167.   { "OTI67",     CS_OTI67     },
  168.   { "OTI77",     CS_OTI77     },
  169.   { "OTI87",     CS_OTI87     },
  170.   { "SIS",       CS_SIS       },
  171.   { "REALTEK",   CS_REALTEK   },
  172.   { "ARK",       CS_ARK       },
  173.   { "NCR77C22E", CS_NCR22E    },
  174.   { "NCR77C32",  CS_NCR32     },
  175.   { "GVGA",      CS_GVGA      },
  176.   { "MX",        CS_MX        },
  177.   { "ET3000",    CS_ET3000    },
  178.   { "",          ENDREC       }
  179. };
  180.  
  181. t_chipset_data ChipsetData[] = {
  182.  
  183.   { CS_VGA,
  184.     0,
  185.     COMMON_OPTS | OPT_CLOCKDIV2,
  186.     45000
  187.   },
  188.  
  189.   { CS_S3,
  190.     1<<CLKCHIP_ICD2061A | 1<<CLKCHIP_ICS9161A | 1<<CLKCHIP_DCS2834 | 1<<CLKCHIP_SC11412\
  191.       | 1<<CLKCHIP_S3GENDAC | 1<<CLKCHIP_S3_SDAC | 1<<CLKCHIP_TI3025 | 1<<CLKCHIP_ICS2595\
  192.       | 1<<CLKCHIP_ICS5300 | 1<<CLKCHIP_ICS5342 | 1<<CLKCHIP_CH8391 | 1<<CLKCHIP_S3TRIO\
  193.       | 1<<CLKCHIP_STG1703 | 1<<CLKCHIP_TI3026 | 1<<CLKCHIP_IBMRGB5XX,
  194.     COMMON_OPTS | OPT_CLOCKDIV2 | OPT_LEGEND | OPT_SPEA_MERCURY | DRAM_SPEED_OPTS | OPT_S3_HS_TEXT | OPT_SOG,
  195.     70000
  196.   },
  197.  
  198.   { CS_CIRRUS,
  199.     1<<CLKCHIP_CIRRUS,
  200.     COMMON_OPTS | DRAM_SPEED_OPTS,
  201.     55000
  202.   },
  203.  
  204.   { CS_ET4000,
  205.     1<<CLKCHIP_ICS5341 | 1 << CLKCHIP_ICD2061A,
  206.     COMMON_OPTS | OPT_CLOCKDIV2 | OPT_HIBIT_LOW | OPT_HIBIT_HIGH | OPT_ET4000_ALTCLK | OPT_LEGEND | OPT_CLKCHIP_X,
  207.     90000
  208.   },
  209.   
  210.   { CS_TVGA8900,
  211.     0,
  212.     COMMON_OPTS | OPT_CLOCKDIV2,
  213.     50000
  214.   },
  215.   
  216.   { CS_TVGA9000,
  217.     0,
  218.     COMMON_OPTS | OPT_CLOCKDIV2,
  219.     45000
  220.   },
  221.   
  222.   { CS_PVGA1,
  223.     0,
  224.     COMMON_OPTS | OPT_CLOCKDIV2,
  225.     45000
  226.   },
  227.   
  228.   { CS_WDC90C0X,
  229.     0,
  230.     COMMON_OPTS | OPT_CLOCKDIV2,
  231.     50000
  232.   },
  233.   
  234.   { CS_WDC90C1X,
  235.     0,
  236.     COMMON_OPTS | OPT_CLOCKDIV2 | OPT_SWAP_HIBIT,
  237.     50000
  238.   },
  239.   
  240.   { CS_WDC90C2X,
  241.     0,
  242.     COMMON_OPTS | OPT_CLOCKDIV2 | OPT_SWAP_HIBIT,
  243.     50000
  244.   },
  245.   
  246.   { CS_WDC90C3X,
  247.     0,
  248.     COMMON_OPTS | OPT_CLOCKDIV2 | OPT_SWAP_HIBIT,
  249.     50000
  250.   },
  251.   
  252.   { CS_ATI,
  253.     0,
  254.     COMMON_OPTS | OPT_CLOCKDIV2,
  255.     55000
  256.   },
  257.   
  258.   { CS_ATIMACH32,
  259.     0,
  260.     COMMON_OPTS | OPT_CLOCKDIV2,
  261.     55000
  262.   },
  263.   
  264.   { CS_VIDEO7,
  265.     0,
  266.     COMMON_OPTS | OPT_CLOCKDIV2,
  267.     45000
  268.   },
  269.   
  270.   { CS_ALI,
  271.     0,
  272.     COMMON_OPTS | OPT_CLOCKDIV2,
  273.     70000
  274.   },
  275.   
  276.   { CS_AL2101,
  277.     0,
  278.     COMMON_OPTS | OPT_CLOCKDIV2,
  279.     60000
  280.   },
  281.   
  282.   { CS_OTI67,
  283.     0,
  284.     COMMON_OPTS | OPT_CLOCKDIV2,
  285.     60000
  286.   },
  287.   
  288.   { CS_OTI77,
  289.     0,
  290.     COMMON_OPTS | OPT_CLOCKDIV2,
  291.     60000
  292.   },
  293.   
  294.   { CS_OTI87,
  295.     0,
  296.     COMMON_OPTS | OPT_CLOCKDIV2,
  297.     70000
  298.   },
  299.   
  300.   { CS_SIS,
  301.     0,
  302.     COMMON_OPTS | OPT_CLOCKDIV2,
  303.     60000  /* preliminary: untested */
  304.   },
  305.   
  306.   { CS_REALTEK,
  307.     0,
  308.     COMMON_OPTS | OPT_CLOCKDIV2,
  309.     50000  /* preliminary: untested */
  310.   },
  311.   
  312.   { CS_ARK,
  313.     1<<CLKCHIP_ICS5342,
  314.     COMMON_OPTS | OPT_CLOCKDIV2,
  315.     60000  /* preliminary: untested */
  316.   },
  317.   
  318.   { CS_NCR22E,
  319.     0,
  320.     COMMON_OPTS | OPT_CLOCKDIV2,
  321.     50000  /* preliminary: untested */
  322.   },
  323.   
  324.   { CS_NCR32,
  325.     0,
  326.     COMMON_OPTS | OPT_CLOCKDIV2,
  327.     60000  /* preliminary: untested */
  328.   },
  329.   
  330.   { CS_GVGA,
  331.     0,
  332.     COMMON_OPTS | OPT_CLOCKDIV2,
  333.     50000  /* preliminary: untested */
  334.   },
  335.   
  336.   { CS_MX,
  337.     0,
  338.     COMMON_OPTS | OPT_CLOCKDIV2,
  339.     50000  /* preliminary: untested */
  340.   },
  341.   
  342.   { CS_ET3000,
  343.     0,
  344.     COMMON_OPTS | OPT_CLOCKDIV2,
  345.     60000  /* preliminary: untested */
  346.   },
  347.   
  348.   { CS_NONE,   /* CS_NONE signals the end of the chipset structure */
  349.     0,
  350.     0,
  351.     0
  352.   }
  353. };
  354.  
  355. /*
  356.  * ClockChips
  357.  */
  358.  
  359. t_str_token ClockchipRec[] = {
  360.   { "icd2061a",   CLKCHIP_ICD2061A   },
  361.   { "ics9161a",   CLKCHIP_ICS9161A   },
  362.   { "dcs2834",    CLKCHIP_DCS2834    },
  363.   { "sc11412",    CLKCHIP_SC11412    },
  364.   { "s3gendac",   CLKCHIP_S3GENDAC   },
  365.   { "s3_sdac",    CLKCHIP_S3_SDAC    },
  366.   { "ti3025",     CLKCHIP_TI3025     },
  367.   { "ics2595",    CLKCHIP_ICS2595    },
  368.   { "ics5300",    CLKCHIP_ICS5300    },
  369.   { "ics5342",    CLKCHIP_ICS5342    },
  370.   { "ch8391",     CLKCHIP_CH8391     },
  371.   { "S3Trio",     CLKCHIP_S3TRIO     },
  372.   { "Cirrus",     CLKCHIP_CIRRUS     },
  373.   { "ics5341",    CLKCHIP_ICS5341    },
  374.   { "stg1703",    CLKCHIP_STG1703    },
  375.   { "ti3026",     CLKCHIP_TI3026     },
  376.   { "ibm_rgb5xx", CLKCHIP_IBMRGB5XX  },
  377.   { "",           ENDREC             }
  378. };
  379.  
  380. t_clockchip_data ClockchipData[] = {
  381.   { CLKCHIP_ICD2061A,  300   , 110000 },  /* data book says 120 MHz max clock, but that doesn't always work */
  382.   { CLKCHIP_ICS9161A,  300   , 110000 },
  383.   { CLKCHIP_DCS2834,   300   , 110000 },
  384.   { CLKCHIP_SC11412,   12500 , 110000 },  /* needs to be checked. This is just a guess */
  385.   { CLKCHIP_S3GENDAC,  12500 , 125000 },
  386.   { CLKCHIP_S3_SDAC,   12500 , 125000 },
  387.   { CLKCHIP_TI3025,    20000 , 220000 },
  388.   { CLKCHIP_ICS2595,   300   , 110000 },
  389.   { CLKCHIP_ICS5300,   12500 , 125000 },
  390.   { CLKCHIP_ICS5342,   12500 , 125000 },
  391.   { CLKCHIP_CH8391,    8500  , 135000 },
  392.   { CLKCHIP_S3TRIO,    16875 , 135000 },
  393.   { CLKCHIP_CIRRUS,    14318 , 110000 },
  394.   { CLKCHIP_ICS5341,   12500 , 135000 },
  395.   { CLKCHIP_STG1703,   8500  , 135000 },
  396.   { CLKCHIP_TI3026,    13750 , 220000 },
  397.   { CLKCHIP_IBMRGB5XX, 16250 , 220000 },
  398.   { ENDREC,            0     , 0      }
  399. };
  400.  
  401. /*
  402.  * Supported Options
  403.  */
  404.  
  405. int STM_Options = 0;
  406.  
  407. t_str_token OptionRec[] = {
  408.   { "HIBIT_LOW",          OPT_HIBIT_LOW     },
  409.   { "HIBIT_HIGH",         OPT_HIBIT_HIGH    },
  410.   { "ET4000_AltClockSel", OPT_ET4000_ALTCLK },
  411.   { "SWAP_HIBIT",         OPT_SWAP_HIBIT    },
  412.   { "Legend",             OPT_LEGEND        },
  413.   { "Fast_DRAM",          OPT_FAST_DRAM     },
  414.   { "Med_DRAM",           OPT_MED_DRAM      },
  415.   { "Slow_DRAM",          OPT_SLOW_DRAM     },
  416.   { "XFast_DRAM",         OPT_XFAST_DRAM    },
  417.   { "LoadFont",           OPT_LOADFONT      },
  418.   { "ClockDiv2",          OPT_CLOCKDIV2     },
  419.   { "SPEA_Mercury",       OPT_SPEA_MERCURY  },
  420.   { "SyncDisks",          OPT_SYNC          },
  421.   { "S3_HSText",          OPT_S3_HS_TEXT    },
  422.   { "clockchip_X",        OPT_CLKCHIP_X     },
  423.   { "sync_on_green",      OPT_SOG           },
  424.   { "16color",            OPT_16COLOR       },
  425.   { "",                   ENDREC            }
  426. };
  427.  
  428.  
  429. #  endif
  430.  
  431. #endif  
  432.  
  433.  
  434.  
  435.